﻿using System;
using System.Collections.Generic;
using WowDotNetAPI.Models;

namespace WowDotNetAPI
{
    public partial interface IExplorer : IDisposable
    {
        void GetCharacter(string realm, string name, Action<Character> callback);
        void GetCharacter(string realm, string name, CharacterOptions characterOptions, Action<Character> callback);

        void GetCharacter(Region region, string realm, string name, Action<Character> callback);
        void GetCharacter(Region region, string realm, string name, CharacterOptions characterOptions, Action<Character> callback);

        void GetGuild(string realm, string name, Action<Guild> callback);
        void GetGuild(string realm, string name, GuildOptions guildOptions, Action<Guild> callback);

        void GetGuild(Region region, string realm, string name, Action<Guild> callback);
        void GetGuild(Region region, string realm, string name, GuildOptions guildOptions, Action<Guild> callback);

        void GetRealms(Action<IEnumerable<Realm>> callback);
        void GetRealms(Region region, Action<IEnumerable<Realm>> callback);

        void  GetCharacterRaces(Action<IEnumerable<CharacterRaceInfo>> callback);
        void  GetCharacterRaces(Region region, Action<IEnumerable<CharacterRaceInfo>> callback);
      
        void  GetCharacterClasses(Action<IEnumerable<CharacterClassInfo>> callback);
        void  GetCharacterClasses(Region region, Action<IEnumerable<CharacterClassInfo>> callback);
    
        void GetGuildRewards(Action<IEnumerable<GuildRewardInfo>> callback);
        void GetGuildRewards(Region region, Action<IEnumerable<GuildRewardInfo>> callback);

        void GetGuildPerks(Action<IEnumerable<GuildPerkInfo>> callback);
        void GetGuildPerks(Region region, Action<IEnumerable<GuildPerkInfo>> callback);
    }
}
